﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using NutriLeaf.Web.Model;

namespace NutriLeaf.Services.Core.Tips
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "ITipService" in both code and config file together.
    [ServiceContract]
    public interface ITipService
    {
        [OperationContract]
        void InsertTip(Tip tip);
        [OperationContract]
        void InsertTipByCategory(Tip tip, TipCategory tipCategory);
        [OperationContract]
        void InsertTipByCategoryID(Tip tip, int tipCategoryId);
        [OperationContract]
        void InsertTipByCategoryAndUserID(Tip tip, TipCategory tipCategory, int userId);
        [OperationContract]
        void ApproveTip(Tip tip);
        [OperationContract]
        void ApproveTips(List<NutriLeaf.Web.Model.Tip> tip);
        [OperationContract]
        void InsertTipCategory(TipCategory tipCategory);
        [OperationContract]
        void InsertTipCategoryByParentCategory(TipCategory tipCategory, TipCategory parentTipCategory);
        [OperationContract]
        void InsertTipCategoryByParentCategoryID(TipCategory category, int parentCategoryId);
        [OperationContract]
        void InsertTipCategoryByDetails(string categoryName, string categoryDescription, int ParentCategoryID);
        [OperationContract]
        void InsertTipCategoryByName(string categoryName, string categoryDescription);
        [OperationContract]
        void InsertTipViewed(TipViewed tipViewed);
        [OperationContract]
        void InsertTipViewedByUser(Tip tip, User user);
        [OperationContract]
        void InsertTipViewedByUserID(int tipId, int userId);
        [OperationContract]
        bool IsTipApprovedByTipID(int tipId);
        [OperationContract]
        bool IsTipApprovedByTip(Tip tip);
        [OperationContract]
        List<Tip> GetMostPopularTips(int categoryId,int count, int skip);
        [OperationContract]
        List<TipCategory> GetAllTipCategories();


        
        






    }
}
